home *** CD-ROM | disk | FTP | other *** search
/ Eagles Nest BBS 8 / Eagles_Nest_Mac_Collection_Disc_8.TOAST / Developer Tools⁄Additions / InsideBa1994 / InsideBasic-94 / IB 94 / Speech Mgr / SPEECH.TLBX next >
Text File  |  1993-05-22  |  10KB  |  345 lines

  1.  
  2. ' FILE: SPEECH.TLBX
  3. '______________________________________________
  4. ' Speech Manager Include Part 1 & 2
  5. ' ©1993 Ariel Publishing by Raoul Watson
  6. '______________________________________________
  7. INCLUDE FILE 1
  8. COMPILE 1,8
  9. GOTO "skipfns"
  10. '
  11. '    FUNCTION CountVoices (numVoices: IntegerPtr): OSErr;
  12. '
  13. '    HOW TO CALL THE ROUTINE:
  14. '    OSErr = FN CountVoices(@numVoices)
  15. '
  16. LOCAL MODE
  17. LOCAL FN CountVoices(numVoicesPtr&)
  18.   ` subq.l #2,sp                 ;clear space for result
  19.   ` move.l ^numVoicesPtr&,-(sp)  ;push VAR pointer on stack
  20.   ` move.l #$0108000C,D0         ;selector in D0
  21.   ` dc.w   $A800                 ;_speechMgr
  22.   ` move.w (sp)+,D0              ;OSErr into D0
  23.   ` ext.l  D0                    ;sign extend word to long
  24. END FN
  25. '
  26. '    FUNCTION GetIndVoice (index: Integer;voice: VoiceSpecPtr): OSErr;
  27. '
  28. '    HOW TO CALL THE ROUTINE:
  29. '    OSErr = FN GetIndVoice(voiceIdx,@VoiceSpec)
  30. '
  31. LOCAL MODE
  32. LOCAL FN GetIndVoice(idx,VoiceSpecPtr&)
  33.   ` subq.l #2,sp                 ;clear space for result
  34.   ` move.w ^idx,-(sp)            ;push index on stack
  35.   ` move.l ^VoiceSpecPtr&,-(sp)  ;push VAR pointer on stack
  36.   ` move.l #$030C000C,D0
  37.   ` dc.w   $A800
  38.   ` move.w (sp)+,D0
  39.   ` ext.l  D0
  40. END FN
  41. '
  42. '    FUNCTION GetVoiceDescription (voice: VoiceSpecPtr; info:VoiceDescriptionPtr): OSErr;
  43. '
  44. '    HOW TO CALL THE ROUTINE:
  45. '    OSErr = FN GetVoiceDescription(@VoiceSpec,@VoiceDescription,infolength&)
  46. '
  47. LOCAL MODE
  48. LOCAL FN GetVoiceDescription(VoiceSpecPtr&,VoiceDescriptionPtr&,Parmlength&)
  49.   ` subq.l #2,sp                 ;clear space for result
  50.   ` move.l ^VoiceSpecPtr&,-(sp)  ;push pointers on stack
  51.   ` move.l ^VoiceDescriptionPtr&,-(sp)   
  52.   ` move.l ^Parmlength&,-(sp)
  53.   ` move.l #$0610000C,D0
  54.   ` dc.w   $A800
  55.   ` move.w (sp)+,D0
  56.   ` ext.l  D0
  57. END FN
  58. '
  59. '    FUNCTION SpeakString(s: Str255): OSErr;
  60. '
  61. '    HOW TO CALL THE ROUTINE:
  62. '    OSErr = FN SpeakString(@yourstring$)
  63. '
  64. LOCAL MODE
  65. LOCAL FN SpeakString(StringPtr&)
  66.   ` subq.l #2,sp               ;clear space for result
  67.   ` move.l ^StringPtr&,-(sp)   ;push string pointer on stack
  68.   ` move.l #$0220000C,D0
  69.   ` dc.w   $A800                
  70.   ` move.w (sp)+,D0
  71.   ` ext.l  D0                  
  72. END FN                                  
  73. '
  74. '    FUNCTION NewSpeechChannel (voice: VoiceSpecPtr; chanPtr: SpeechChannelPtr): OSErr;
  75. '
  76. '    HOW TO CALL THE ROUTINE:
  77. '    OSErr = FN NewSpeechChannel(@VoiceSpec,@chan&)
  78. '
  79. LOCAL MODE
  80. LOCAL FN NewSpeechChannel(VoiceSpecPtr&,chanPtr&)
  81.   ` subq.l #2,sp                 ;clear space for result
  82.   ` move.l ^VoiceSpecPtr&,-(sp)  ;push pointers on stack
  83.   ` move.l ^chanPtr&,-(sp)   
  84.   ` move.l #$0418000C,D0
  85.   ` dc.w   $A800
  86.   ` move.w (sp)+,D0
  87.   ` ext.l  D0
  88. END FN
  89. '
  90. '    FUNCTION DisposeSpeechChannel (chan: SpeechChannel): OSErr;
  91. '
  92. '    HOW TO CALL THE ROUTINE:
  93. '    OSErr = FN DisposeSpeechChannel(chan&)
  94. '
  95. LOCAL MODE
  96. LOCAL FN DisposeSpeechChannel(channel&)
  97.   ` subq.l #2,sp                 ;clear space for result
  98.   ` move.l ^channel&,-(sp)       ;channel   
  99.   ` move.l #$021C000C,D0
  100.   ` dc.w   $A800
  101.   ` move.w (sp)+,D0
  102.   ` ext.l  D0
  103. END FN
  104. '
  105. '    FUNCTION SpeakText (chan: SpeechChannel; textbuf: Ptr; byteLen: LongInt): OSErr;
  106. '
  107. '    HOW TO CALL THE ROUTINE:
  108. '    OSErr = FN SpeakText(chan&,@yourstring$+1,len(yourstring$))
  109. '
  110. LOCAL MODE
  111. LOCAL FN SpeakText(channel&,textPtr&,textLength&)
  112.   ` subq.l #2,sp                 ;clear space for result
  113.   ` move.l ^channel&,-(sp)       ;channel ptr   
  114.   ` move.l ^textPtr&,-(sp)       ;text ptr  
  115.   ` move.l ^textLength&,-(sp)    ;length   
  116.   ` move.l #$0624000C,D0
  117.   ` dc.w   $A800
  118.   ` move.w (sp)+,D0
  119.   ` ext.l  D0
  120. END FN
  121. '
  122. '    FUNCTION SpeakBuffer (chan: SpeechChannel; textbuf: Ptr; byteLen: LongInt; controlFlags: LongInt): OSErr;
  123. '
  124. '    HOW TO CALL THE ROUTINE:
  125. '    OSErr = FN SpeakBuffer(chan&,@yourstring$+1,len(yourstring$,flag&))
  126. '
  127. LOCAL MODE
  128. LOCAL FN SpeakBuffer(channel&,textPtr&,textLength&,controlFlag&)
  129.   ` subq.l #2,sp                 ;clear space for result
  130.   ` move.l ^channel&,-(sp)       ;channel ptr   
  131.   ` move.l ^textPtr&,-(sp)       ;text ptr  
  132.   ` move.l ^textLength&,-(sp)    ;length   
  133.   ` move.l ^controlFlag&,-(sp)   ;flag  
  134.   ` move.l #$0828000C,D0
  135.   ` dc.w   $A800
  136.   ` move.w (sp)+,D0
  137.   ` ext.l  D0
  138. END FN
  139. '
  140. '    FUNCTION ContinueSpeech (chan: SpeechChannel): OSErr;
  141. '
  142. '    HOW TO CALL THE ROUTINE:
  143. '    OSErr = FN ContinueSpeech(chan&)
  144. '
  145. LOCAL MODE
  146. LOCAL FN ContinueSpeech(channel&)
  147.   ` subq.l #2,sp                 ;clear space for result
  148.   ` move.l ^channel&,-(sp)       ;channel    
  149.   ` move.l #$0238000C,D0
  150.   ` dc.w   $A800
  151.   ` move.w (sp)+,D0
  152.   ` ext.l  D0
  153. END FN
  154. '
  155. '    FUNCTION StopSpeech (chan: SpeechChannel): OSErr;
  156. '
  157. '    HOW TO CALL THE ROUTINE:
  158. '    OSErr = FN StopSpeech(chan&)
  159. '
  160. LOCAL MODE
  161. LOCAL FN StopSpeech(channel&)
  162.   ` subq.l #2,sp                 ;clear space for result
  163.   ` move.l ^channel&,-(sp)       ;channel   
  164.   ` move.l #$022C000C,D0
  165.   ` dc.w   $A800
  166.   ` move.w (sp)+,D0
  167.   ` ext.l  D0
  168. END FN
  169. '
  170. '    FUNCTION SpeechBusy: Integer;
  171. '
  172. '    HOW TO CALL THE ROUTINE:
  173. '    Busy = FN SpeechBusy
  174. '
  175. LOCAL MODE
  176. LOCAL FN SpeechBusy
  177.   ` subq.l #2,sp                ;clear space for result
  178.   ` move.l #$003C000C,D0
  179.   ` dc.w   $A800
  180.   ` move.w (sp)+,D0
  181.   ` ext.l  D0
  182. END FN
  183. '
  184. '    FUNCTION SpeechManagerVersion: NumVersion;
  185. '
  186. '    HOW TO CALL THE ROUTINE:
  187. '    SpeechMgrVersion = FN SpeechManagerVersion
  188. '
  189. LOCAL MODE
  190. LOCAL FN SpeechManagerVersion
  191.   ` subq.l #2,sp               ;clear space for result
  192.   ` move.l #$0000000C,D0
  193.   ` dc.w   $A800                
  194.   ` move.w (sp)+,D0
  195.   ` ext.l  D0                   
  196. END FN                                  
  197. '========================= Article part 2 =========================
  198. '
  199. '    FUNCTION SetSpeechRate (chan: SpeechChannel; rate: Fixed): OSErr;
  200. '
  201. '    HOW TO CALL THE ROUTINE:
  202. '    OSErr = FN SetSpeechRate(chan&,rate&)
  203. '
  204. LOCAL MODE
  205. LOCAL FN SetSpeechRate(channel&,speechrate&)
  206.   ` subq.l #2,sp                 ;clear space for result
  207.   ` move.l ^channel&,-(sp)       ;channel   
  208.   ` move.l ^speechrate&,-(sp)    ;rate  
  209.   ` move.l #$0444000C,D0
  210.   ` dc.w   $A800
  211.   ` move.w (sp)+,D0
  212.   ` ext.l  D0
  213. END FN
  214. '
  215. '    FUNCTION GetSpeechRate (chan: SpeechChannel; rate: FixedPtr): OSErr;
  216. '
  217. '    HOW TO CALL THE ROUTINE:
  218. '    OSErr = FN GetSpeechRate(chan&,@rate&)
  219. '
  220. LOCAL MODE
  221. LOCAL FN GetSpeechRate(channel&,ratePtr&)
  222.   ` subq.l #2,sp                 ;clear space for result
  223.   ` move.l ^channel&,-(sp)       ;channel   
  224.   ` move.l ^ratePtr&,-(sp)       ;rate ptr
  225.   ` move.l #$0448000C,D0
  226.   ` dc.w   $A800
  227.   ` move.w (sp)+,D0
  228.   ` ext.l  D0
  229. END FN
  230. '
  231. '    FUNCTION SetSpeechPitch (chan: SpeechChannel; pitch: Fixed): OSErr;
  232. '
  233. '    HOW TO CALL THE ROUTINE:
  234. '    OSErr = FN SetSpeechPitch(chan&,pitch&)
  235. '
  236. LOCAL MODE
  237. LOCAL FN SetSpeechPitch(channel&,speechpitch&)
  238.   ` subq.l #2,sp                 ;clear space for result
  239.   ` move.l ^channel&,-(sp)       ;channel    
  240.   ` move.l ^speechpitch&,-(sp)   ;pitch
  241.   ` move.l #$044C000C,D0
  242.   ` dc.w   $A800
  243.   ` move.w (sp)+,D0
  244.   ` ext.l  D0
  245. END FN
  246. '
  247. '    FUNCTION GetSpeechPitch (chan: SpeechChannel; pitch: FixedPtr): OSErr;
  248. '
  249. '    HOW TO CALL THE ROUTINE:
  250. '    OSErr = FN GetSpeechPitch(chan&,@pitch&)
  251. '
  252. LOCAL MODE
  253. LOCAL FN GetSpeechPitch(channel&,pitchPtr&)
  254.   ` subq.l #2,sp                 ;clear space for result
  255.   ` move.l ^channel&,-(sp)       ;channel    
  256.   ` move.l ^pitchPtr&,-(sp)      ;pitch ptr
  257.   ` move.l #$0450000C,D0
  258.   ` dc.w   $A800
  259.   ` move.w (sp)+,D0
  260.   ` ext.l  D0
  261. END FN
  262. '
  263. '    FUNCTION PauseSpeechAt(chan: SpeechChannel; whereToPause: LongInt): OSErr;
  264. '
  265. '    HOW TO CALL THE ROUTINE:
  266. '    OSErr = FN PauseSpeechAt(chan&,where&)
  267. '
  268. LOCAL MODE
  269. LOCAL FN PauseSpeechAt(channel&,where&)
  270.   ` subq.l #2,sp                 ;clear space for result
  271.   ` move.l ^channel&,-(sp)       ;channel    
  272.   ` move.l ^where&,-(sp)         ;where  
  273.   ` move.l #$0434000C,D0
  274.   ` dc.w   $A800
  275.   ` move.w (sp)+,D0
  276.   ` ext.l  D0
  277. END FN
  278. '
  279. '    FUNCTION StopSpeechAt(chan: SpeechChannel; whereToStop: LongInt): OSErr;
  280. '
  281. '    HOW TO CALL THE ROUTINE:
  282. '    OSErr = FN StopSpeechAt(chan&,where&)
  283. '
  284. LOCAL MODE
  285. LOCAL FN StopSpeechAt(channel&,where&)
  286.   ` subq.l #2,sp                 ;clear space for result
  287.   ` move.l ^channel&,-(sp)       ;channel    
  288.   ` move.l ^where&,-(sp)         ;where   
  289.   ` move.l #$0430000C,D0
  290.   ` dc.w   $A800
  291.   ` move.w (sp)+,D0
  292.   ` ext.l  D0
  293. END FN
  294. '
  295. '    FUNCTION GetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: Ptr): OSErr;
  296. '
  297. '    HOW TO CALL THE ROUTINE:
  298. '    OSErr = FN GetSpeechInfo(chan&,selector&,@structureInfo)
  299. '
  300. LOCAL MODE
  301. LOCAL FN GetSpeechInfo(channel&,selector&,infoPtr&)
  302.   ` subq.l #2,sp                 ;clear space for result
  303.   ` move.l ^channel&,-(sp)       ;channel    
  304.   ` move.l ^selector&,-(sp)      ;selector  
  305.   ` move.l ^infoPtr&,-(sp)       ;info structure Ptr
  306.   ` move.l #$0658000C,D0
  307.   ` dc.w   $A800
  308.   ` move.w (sp)+,D0
  309.   ` ext.l  D0
  310. END FN
  311. '
  312. '    FUNCTION SetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: Ptr): OSErr;
  313. '
  314. '    HOW TO CALL THE ROUTINE:
  315. '    OSErr = FN SetSpeechInfo(chan&,selector&,@structureInfo)
  316. '
  317. LOCAL MODE
  318. LOCAL FN SetSpeechInfo(channel&,selector&,infoPtr&)
  319.   ` subq.l #2,sp                 ;clear space for result
  320.   ` move.l ^channel&,-(sp)       ;channel    
  321.   ` move.l ^selector&,-(sp)      ;selector  
  322.   ` move.l ^infoPtr&,-(sp)       ;info structure Ptr
  323.   ` move.l #$0654000C,D0
  324.   ` dc.w   $A800
  325.   ` move.w (sp)+,D0
  326.   ` ext.l  D0
  327. END FN
  328. '
  329. '    FUNCTION SpeechBusySystemWide: Integer;
  330. '
  331. '    HOW TO CALL THE ROUTINE:
  332. '    NumChannelsBusy = FN SpeechBusySystemWide
  333. '
  334. LOCAL MODE
  335. LOCAL FN SpeechBusySystemWide
  336.   ` subq.l #2,sp                ;clear space for result
  337.   ` move.l #$0040000C,D0
  338.   ` dc.w   $A800
  339.   ` move.w (sp)+,D0
  340.   ` ext.l  D0
  341. END FN
  342.  
  343. "skipfns"
  344. REM ============================================================
  345.